package com.sky.vo;

//import io.swagger.annotations.ApiModel;
//import io.swagger.annotations.ApiModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

@Data
@Builder
//创建一个名为ThisClassBuilder的内部静态类，并具有和实体类形同的属性（称为构建器）。
//在构建器中：对于目标类中的所有的属性和未初始化的final字段，都会在构建器中创建对应属性。
//在构建器中：创建一个无参的default构造函数。
//在构建器中：对于实体类中的每个参数，都会对应创建类似于setter的方法，只不过方法名与该参数名相同。 并且返回值是构建器本身（便于链式调用），如上例所示。
//在构建器中：一个build()方法，调用此方法，就会根据设置的值进行创建实体对象。
//在构建器中：同时也会生成一个toString()方法。
//在实体类中：会创建一个builder()方法，它的目的是用来创建构建器。
//在使用@Singular注释注释一个集合字段（使用@Builder注释类），
// lombok会将该构建器节点视为一个集合，并生成两个adder方法而不是setter方法。
//一个向集合添加单个元素，
//一个将另一个集合的所有元素添加到集合中。
@NoArgsConstructor
@AllArgsConstructor
//@ApiModel(description = "员工登录返回的数据格式")
//@Target注解
//用于指定自定义注解可以应用的程序元素类型，参数是一个ElementType数组。该源码表示应用在类上
//ElementType.PACKAGE：该注解只能声明在一个包名前。
//ElementType.ANNOTATION_TYPE：该注解只能声明在一个注解类型前。
//ElementType.TYPE：该注解只能声明在一个类前。
//ElementType.CONSTRUCTOR：该注解只能声明在一个类的构造方法前。
//ElementType.LOCAL_VARIABLE：该注解只能声明在一个局部变量前。
//ElementType.METHOD：该注解只能声明在一个类的方法前。
//ElementType.PARAMETER：该注解只能声明在一个方法参数前。
//ElementType.FIELD：该注解只能声明在一个类的字段前。
//@Retention注解
//用于指定自定义注解的生命周期，即注解在程序运行时的保留策略。
//RetentionPolicy.SOURCE  : 注解只保留在源文件，当Java文件编译成class文件的时候，注解被遗弃；
//RetentionPolicy.CLASS  : 注解被保留到class文件，但jvm加载class文件时候被遗弃，这是默认的生命周期；
//RetentionPolicy.RUNTIME  : 注解不仅被保存到class文件中，jvm加载class文件之后，仍然存在；
//@Inherited注解
//子类会继承该注解。默认情况下，注解不会被子类继承。

@Schema(description = "员工登录返回的数据格式")
public class EmployeeLoginVO implements Serializable {

//    @ApiModelProperty("主键值")
    @Schema(description = "主键值")
    private Long id;

//    @ApiModelProperty("用户名")
    @Schema(description = "用户名")
    private String userName;

//    @ApiModelProperty("姓名")
    @Schema(description = "姓名")
    private String name;

//    @ApiModelProperty("jwt令牌")
    @Schema(description = "jwt令牌")
    private String token;

}
